package cn.ahaoweb.drule.core.model.annotations;

import cn.ahaoweb.drule.core.model.enums.RuleClassType;

import java.lang.annotation.*;

/**
 * @Name: 规则对象信息注解
 * @Description: 用于描述对象类型，被注解的Class可直接获取其元数据信息
 * @Author: wangzhonghao
 * @Date: 2025/1/26 10:55
 */
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface ClassAnn {

    // 名称
    String name();

    // 类型
    RuleClassType type() default RuleClassType.ABLE;

    // 附加属性集合
    AttachProperty[] properties() default {};

    /**
     * 父类遍历深度：如果规则对象存在父类，父类的字段是否也包含在该对象的字段集合中。
     */
    int superDepth() default -1;

    /**
     * 子对象遍历深度：当规则对象存在嵌套引用时（暂时不包含循环引用），该属性用于表示支持遍历子对象的深度。
     */
    int childDepth() default -1;

}
